/*!-----------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Version: 0.46.0(21007360cad28648bdf46282a2592cb47c3a7a6f)
 * Released under the MIT license
 * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
 *-----------------------------------------------------------------------------*/
define('vs/basic-languages/abap/abap', ['require', 'require'], require => {
  'use strict'
  var moduleExports = (() => {
    var s = Object.defineProperty
    var o = Object.getOwnPropertyDescriptor
    var r = Object.getOwnPropertyNames
    var c = Object.prototype.hasOwnProperty
    var l = (t, e) => {
        for (var i in e) s(t, i, { get: e[i], enumerable: !0 })
      },
      d = (t, e, i, a) => {
        if ((e && typeof e == 'object') || typeof e == 'function')
          for (let n of r(e))
            !c.call(t, n) && n !== i && s(t, n, { get: () => e[n], enumerable: !(a = o(e, n)) || a.enumerable })
        return t
      }
    var p = t => d(s({}, '__esModule', { value: !0 }), t)
    var g = {}
    l(g, { conf: () => m, language: () => u })
    var m = {
        comments: { lineComment: '*' },
        brackets: [
          ['[', ']'],
          ['(', ')'],
        ],
      },
      u = {
        defaultToken: 'invalid',
        ignoreCase: !0,
        tokenPostfix: '.abap',
        keywords: [
          'abap-source',
          'abbreviated',
          'abstract',
          'accept',
          'accepting',
          'according',
          'activation',
          'actual',
          'add',
          'add-corresponding',
          'adjacent',
          'after',
          'alias',
          'aliases',
          'align',
          'all',
          'allocate',
          'alpha',
          'analysis',
          'analyzer',
          'and',
          'append',
          'appendage',
          'appending',
          'application',
          'archive',
          'area',
          'arithmetic',
          'as',
          'ascending',
          'aspect',
          'assert',
          'assign',
          'assigned',
          'assigning',
          'association',
          'asynchronous',
          'at',
          'attributes',
          'authority',
          'authority-check',
          'avg',
          'back',
          'background',
          'backup',
          'backward',
          'badi',
          'base',
          'before',
          'begin',
          'between',
          'big',
          'binary',
          'bintohex',
          'bit',
          'black',
          'blank',
          'blanks',
          'blob',
          'block',
          'blocks',
          'blue',
          'bound',
          'boundaries',
          'bounds',
          'boxed',
          'break-point',
          'buffer',
          'by',
          'bypassing',
          'byte',
          'byte-order',
          'call',
          'calling',
          'case',
          'cast',
          'casting',
          'catch',
          'center',
          'centered',
          'chain',
          'chain-input',
          'chain-request',
          'change',
          'changing',
          'channels',
          'character',
          'char-to-hex',
          'check',
          'checkbox',
          'ci_',
          'circular',
          'class',
          'class-coding',
          'class-data',
          'class-events',
          'class-methods',
          'class-pool',
          'cleanup',
          'clear',
          'client',
          'clob',
          'clock',
          'close',
          'coalesce',
          'code',
          'coding',
          'col_background',
          'col_group',
          'col_heading',
          'col_key',
          'col_negative',
          'col_normal',
          'col_positive',
          'col_total',
          'collect',
          'color',
          'column',
          'columns',
          'comment',
          'comments',
          'commit',
          'common',
          'communication',
          'comparing',
          'component',
          'components',
          'compression',
          'compute',
          'concat',
          'concat_with_space',
          'concatenate',
          'cond',
          'condense',
          'condition',
          'connect',
          'connection',
          'constants',
          'context',
          'contexts',
          'continue',
          'control',
          'controls',
          'conv',
          'conversion',
          'convert',
          'copies',
          'copy',
          'corresponding',
          'country',
          'cover',
          'cpi',
          'create',
          'creating',
          'critical',
          'currency',
          'currency_conversion',
          'current',
          'cursor',
          'cursor-selection',
          'customer',
          'customer-function',
          'dangerous',
          'data',
          'database',
          'datainfo',
          'dataset',
          'date',
          'dats_add_days',
          'dats_add_months',
          'dats_days_between',
          'dats_is_valid',
          'daylight',
          'dd/mm/yy',
          'dd/mm/yyyy',
          'ddmmyy',
          'deallocate',
          'decimal_shift',
          'decimals',
          'declarations',
          'deep',
          'default',
          'deferred',
          'define',
          'defining',
          'definition',
          'delete',
          'deleting',
          'demand',
          'department',
          'descending',
          'describe',
          'destination',
          'detail',
          'dialog',
          'directory',
          'disconnect',
          'display',
          'display-mode',
          'distinct',
          'divide',
          'divide-corresponding',
          'division',
          'do',
          'dummy',
          'duplicate',
          'duplicates',
          'duration',
          'during',
          'dynamic',
          'dynpro',
          'edit',
          'editor-call',
          'else',
          'elseif',
          'empty',
          'enabled',
          'enabling',
          'encoding',
          'end',
          'endat',
          'endcase',
          'endcatch',
          'endchain',
          'endclass',
          'enddo',
          'endenhancement',
          'end-enhancement-section',
          'endexec',
          'endform',
          'endfunction',
          'endian',
          'endif',
          'ending',
          'endinterface',
          'end-lines',
          'endloop',
          'endmethod',
          'endmodule',
          'end-of-definition',
          'end-of-editing',
          'end-of-file',
          'end-of-page',
          'end-of-selection',
          'endon',
          'endprovide',
          'endselect',
          'end-test-injection',
          'end-test-seam',
          'endtry',
          'endwhile',
          'endwith',
          'engineering',
          'enhancement',
          'enhancement-point',
          'enhancements',
          'enhancement-section',
          'entries',
          'entry',
          'enum',
          'environment',
          'equiv',
          'errormessage',
          'errors',
          'escaping',
          'event',
          'events',
          'exact',
          'except',
          'exception',
          'exceptions',
          'exception-table',
          'exclude',
          'excluding',
          'exec',
          'execute',
          'exists',
          'exit',
          'exit-command',
          'expand',
          'expanding',
          'expiration',
          'explicit',
          'exponent',
          'export',
          'exporting',
          'extend',
          'extended',
          'extension',
          'extract',
          'fail',
          'fetch',
          'field',
          'field-groups',
          'fields',
          'field-symbol',
          'field-symbols',
          'file',
          'filter',
          'filters',
          'filter-table',
          'final',
          'find',
          'first',
          'first-line',
          'fixed-point',
          'fkeq',
          'fkge',
          'flush',
          'font',
          'for',
          'form',
          'format',
          'forward',
          'found',
          'frame',
          'frames',
          'free',
          'friends',
          'from',
          'function',
          'functionality',
          'function-pool',
          'further',
          'gaps',
          'generate',
          'get',
          'giving',
          'gkeq',
          'gkge',
          'global',
          'grant',
          'green',
          'group',
          'groups',
          'handle',
          'handler',
          'harmless',
          'hashed',
          'having',
          'hdb',
          'header',
          'headers',
          'heading',
          'head-lines',
          'help-id',
          'help-request',
          'hextobin',
          'hide',
          'high',
          'hint',
          'hold',
          'hotspot',
          'icon',
          'id',
          'identification',
          'identifier',
          'ids',
          'if',
          'ignore',
          'ignoring',
          'immediately',
          'implementation',
          'implementations',
          'implemented',
          'implicit',
          'import',
          'importing',
          'in',
          'inactive',
          'incl',
          'include',
          'includes',
          'including',
          'increment',
          'index',
          'index-line',
          'infotypes',
          'inheriting',
          'init',
          'initial',
          'initialization',
          'inner',
          'inout',
          'input',
          'insert',
          'instance',
          'instances',
          'instr',
          'intensified',
          'interface',
          'interface-pool',
          'interfaces',
          'internal',
          'intervals',
          'into',
          'inverse',
          'inverted-date',
          'is',
          'iso',
          'job',
          'join',
          'keep',
          'keeping',
          'kernel',
          'key',
          'keys',
          'keywords',
          'kind',
          'language',
          'last',
          'late',
          'layout',
          'leading',
          'leave',
          'left',
          'left-justified',
          'leftplus',
          'leftspace',
          'legacy',
          'length',
          'let',
          'level',
          'levels',
          'like',
          'line',
          'lines',
          'line-count',
          'linefeed',
          'line-selection',
          'line-size',
          'list',
          'listbox',
          'list-processing',
          'little',
          'llang',
          'load',
          'load-of-program',
          'lob',
          'local',
          'locale',
          'locator',
          'logfile',
          'logical',
          'log-point',
          'long',
          'loop',
          'low',
          'lower',
          'lpad',
          'lpi',
          'ltrim',
          'mail',
          'main',
          'major-id',
          'mapping',
          'margin',
          'mark',
          'mask',
          'match',
          'matchcode',
          'max',
          'maximum',
          'medium',
          'members',
          'memory',
          'mesh',
          'message',
          'message-id',
          'messages',
          'messaging',
          'method',
          'methods',
          'min',
          'minimum',
          'minor-id',
          'mm/dd/yy',
          'mm/dd/yyyy',
          'mmddyy',
          'mode',
          'modif',
          'modifier',
          'modify',
          'module',
          'move',
          'move-corresponding',
          'multiply',
          'multiply-corresponding',
          'name',
          'nametab',
          'native',
          'nested',
          'nesting',
          'new',
          'new-line',
          'new-page',
          'new-section',
          'next',
          'no',
          'no-display',
          'no-extension',
          'no-gap',
          'no-gaps',
          'no-grouping',
          'no-heading',
          'no-scrolling',
          'no-sign',
          'no-title',
          'no-topofpage',
          'no-zero',
          'node',
          'nodes',
          'non-unicode',
          'non-unique',
          'not',
          'null',
          'number',
          'object',
          'objects',
          'obligatory',
          'occurrence',
          'occurrences',
          'occurs',
          'of',
          'off',
          'offset',
          'ole',
          'on',
          'only',
          'open',
          'option',
          'optional',
          'options',
          'or',
          'order',
          'other',
          'others',
          'out',
          'outer',
          'output',
          'output-length',
          'overflow',
          'overlay',
          'pack',
          'package',
          'pad',
          'padding',
          'page',
          'pages',
          'parameter',
          'parameters',
          'parameter-table',
          'part',
          'partially',
          'pattern',
          'percentage',
          'perform',
          'performing',
          'person',
          'pf1',
          'pf10',
          'pf11',
          'pf12',
          'pf13',
          'pf14',
          'pf15',
          'pf2',
          'pf3',
          'pf4',
          'pf5',
          'pf6',
          'pf7',
          'pf8',
          'pf9',
          'pf-status',
          'pink',
          'places',
          'pool',
          'pos_high',
          'pos_low',
          'position',
          'pragmas',
          'precompiled',
          'preferred',
          'preserving',
          'primary',
          'print',
          'print-control',
          'priority',
          'private',
          'procedure',
          'process',
          'program',
          'property',
          'protected',
          'provide',
          'public',
          'push',
          'pushbutton',
          'put',
          'queue-only',
          'quickinfo',
          'radiobutton',
          'raise',
          'raising',
          'range',
          'ranges',
          'read',
          'reader',
          'read-only',
          'receive',
          'received',
          'receiver',
          'receiving',
          'red',
          'redefinition',
          'reduce',
          'reduced',
          'ref',
          'reference',
          'refresh',
          'regex',
          'reject',
          'remote',
          'renaming',
          'replace',
          'replacement',
          'replacing',
          'report',
          'request',
          'requested',
          'reserve',
          'reset',
          'resolution',
          'respecting',
          'responsible',
          'result',
          'results',
          'resumable',
          'resume',
          'retry',
          'return',
          'returncode',
          'returning',
          'returns',
          'right',
          'right-justified',
          'rightplus',
          'rightspace',
          'risk',
          'rmc_communication_failure',
          'rmc_invalid_status',
          'rmc_system_failure',
          'role',
          'rollback',
          'rows',
          'rpad',
          'rtrim',
          'run',
          'sap',
          'sap-spool',
          'saving',
          'scale_preserving',
          'scale_preserving_scientific',
          'scan',
          'scientific',
          'scientific_with_leading_zero',
          'scroll',
          'scroll-boundary',
          'scrolling',
          'search',
          'secondary',
          'seconds',
          'section',
          'select',
          'selection',
          'selections',
          'selection-screen',
          'selection-set',
          'selection-sets',
          'selection-table',
          'select-options',
          'send',
          'separate',
          'separated',
          'set',
          'shared',
          'shift',
          'short',
          'shortdump-id',
          'sign_as_postfix',
          'single',
          'size',
          'skip',
          'skipping',
          'smart',
          'some',
          'sort',
          'sortable',
          'sorted',
          'source',
          'specified',
          'split',
          'spool',
          'spots',
          'sql',
          'sqlscript',
          'stable',
          'stamp',
          'standard',
          'starting',
          'start-of-editing',
          'start-of-selection',
          'state',
          'statement',
          'statements',
          'static',
          'statics',
          'statusinfo',
          'step-loop',
          'stop',
          'structure',
          'structures',
          'style',
          'subkey',
          'submatches',
          'submit',
          'subroutine',
          'subscreen',
          'subtract',
          'subtract-corresponding',
          'suffix',
          'sum',
          'summary',
          'summing',
          'supplied',
          'supply',
          'suppress',
          'switch',
          'switchstates',
          'symbol',
          'syncpoints',
          'syntax',
          'syntax-check',
          'syntax-trace',
          'system-call',
          'system-exceptions',
          'system-exit',
          'tab',
          'tabbed',
          'table',
          'tables',
          'tableview',
          'tabstrip',
          'target',
          'task',
          'tasks',
          'test',
          'testing',
          'test-injection',
          'test-seam',
          'text',
          'textpool',
          'then',
          'throw',
          'time',
          'times',
          'timestamp',
          'timezone',
          'tims_is_valid',
          'title',
          'titlebar',
          'title-lines',
          'to',
          'tokenization',
          'tokens',
          'top-lines',
          'top-of-page',
          'trace-file',
          'trace-table',
          'trailing',
          'transaction',
          'transfer',
          'transformation',
          'translate',
          'transporting',
          'trmac',
          'truncate',
          'truncation',
          'try',
          'tstmp_add_seconds',
          'tstmp_current_utctimestamp',
          'tstmp_is_valid',
          'tstmp_seconds_between',
          'type',
          'type-pool',
          'type-pools',
          'types',
          'uline',
          'unassign',
          'under',
          'unicode',
          'union',
          'unique',
          'unit_conversion',
          'unix',
          'unpack',
          'until',
          'unwind',
          'up',
          'update',
          'upper',
          'user',
          'user-command',
          'using',
          'utf-8',
          'valid',
          'value',
          'value-request',
          'values',
          'vary',
          'varying',
          'verification-message',
          'version',
          'via',
          'view',
          'visible',
          'wait',
          'warning',
          'when',
          'whenever',
          'where',
          'while',
          'width',
          'window',
          'windows',
          'with',
          'with-heading',
          'without',
          'with-title',
          'word',
          'work',
          'write',
          'writer',
          'xml',
          'xsd',
          'yellow',
          'yes',
          'yymmdd',
          'zero',
          'zone',
          'abap_system_timezone',
          'abap_user_timezone',
          'access',
          'action',
          'adabas',
          'adjust_numbers',
          'allow_precision_loss',
          'allowed',
          'amdp',
          'applicationuser',
          'as_geo_json',
          'as400',
          'associations',
          'balance',
          'behavior',
          'breakup',
          'bulk',
          'cds',
          'cds_client',
          'check_before_save',
          'child',
          'clients',
          'corr',
          'corr_spearman',
          'cross',
          'cycles',
          'datn_add_days',
          'datn_add_months',
          'datn_days_between',
          'dats_from_datn',
          'dats_tims_to_tstmp',
          'dats_to_datn',
          'db2',
          'db6',
          'ddl',
          'dense_rank',
          'depth',
          'deterministic',
          'discarding',
          'entities',
          'entity',
          'error',
          'failed',
          'finalize',
          'first_value',
          'fltp_to_dec',
          'following',
          'fractional',
          'full',
          'graph',
          'grouping',
          'hierarchy',
          'hierarchy_ancestors',
          'hierarchy_ancestors_aggregate',
          'hierarchy_descendants',
          'hierarchy_descendants_aggregate',
          'hierarchy_siblings',
          'incremental',
          'indicators',
          'lag',
          'last_value',
          'lead',
          'leaves',
          'like_regexpr',
          'link',
          'locale_sap',
          'lock',
          'locks',
          'many',
          'mapped',
          'matched',
          'measures',
          'median',
          'mssqlnt',
          'multiple',
          'nodetype',
          'ntile',
          'nulls',
          'occurrences_regexpr',
          'one',
          'operations',
          'oracle',
          'orphans',
          'over',
          'parent',
          'parents',
          'partition',
          'pcre',
          'period',
          'pfcg_mapping',
          'preceding',
          'privileged',
          'product',
          'projection',
          'rank',
          'redirected',
          'replace_regexpr',
          'reported',
          'response',
          'responses',
          'root',
          'row',
          'row_number',
          'sap_system_date',
          'save',
          'schema',
          'session',
          'sets',
          'shortdump',
          'siblings',
          'spantree',
          'start',
          'stddev',
          'string_agg',
          'subtotal',
          'sybase',
          'tims_from_timn',
          'tims_to_timn',
          'to_blob',
          'to_clob',
          'total',
          'trace-entry',
          'tstmp_to_dats',
          'tstmp_to_dst',
          'tstmp_to_tims',
          'tstmpl_from_utcl',
          'tstmpl_to_utcl',
          'unbounded',
          'utcl_add_seconds',
          'utcl_current',
          'utcl_seconds_between',
          'uuid',
          'var',
          'verbatim',
        ],
        builtinFunctions: [
          'abs',
          'acos',
          'asin',
          'atan',
          'bit-set',
          'boolc',
          'boolx',
          'ceil',
          'char_off',
          'charlen',
          'cmax',
          'cmin',
          'concat_lines_of',
          'contains',
          'contains_any_not_of',
          'contains_any_of',
          'cos',
          'cosh',
          'count',
          'count_any_not_of',
          'count_any_of',
          'dbmaxlen',
          'distance',
          'escape',
          'exp',
          'find_any_not_of',
          'find_any_of',
          'find_end',
          'floor',
          'frac',
          'from_mixed',
          'ipow',
          'line_exists',
          'line_index',
          'log',
          'log10',
          'matches',
          'nmax',
          'nmin',
          'numofchar',
          'repeat',
          'rescale',
          'reverse',
          'round',
          'segment',
          'shift_left',
          'shift_right',
          'sign',
          'sin',
          'sinh',
          'sqrt',
          'strlen',
          'substring',
          'substring_after',
          'substring_before',
          'substring_from',
          'substring_to',
          'tan',
          'tanh',
          'to_lower',
          'to_mixed',
          'to_upper',
          'trunc',
          'utclong_add',
          'utclong_current',
          'utclong_diff',
          'xsdbool',
          'xstrlen',
        ],
        typeKeywords: [
          'b',
          'c',
          'd',
          'decfloat16',
          'decfloat34',
          'f',
          'i',
          'int8',
          'n',
          'p',
          's',
          'string',
          't',
          'utclong',
          'x',
          'xstring',
          'any',
          'clike',
          'csequence',
          'decfloat',
          'numeric',
          'simple',
          'xsequence',
          'accp',
          'char',
          'clnt',
          'cuky',
          'curr',
          'datn',
          'dats',
          'd16d',
          'd16n',
          'd16r',
          'd34d',
          'd34n',
          'd34r',
          'dec',
          'df16_dec',
          'df16_raw',
          'df34_dec',
          'df34_raw',
          'fltp',
          'geom_ewkb',
          'int1',
          'int2',
          'int4',
          'lang',
          'lchr',
          'lraw',
          'numc',
          'quan',
          'raw',
          'rawstring',
          'sstring',
          'timn',
          'tims',
          'unit',
          'utcl',
          'df16_scl',
          'df34_scl',
          'prec',
          'varc',
          'abap_bool',
          'abap_false',
          'abap_true',
          'abap_undefined',
          'me',
          'screen',
          'space',
          'super',
          'sy',
          'syst',
          'table_line',
          '*sys*',
        ],
        builtinMethods: ['class_constructor', 'constructor'],
        derivedTypes: [
          '%CID',
          '%CID_REF',
          '%CONTROL',
          '%DATA',
          '%ELEMENT',
          '%FAIL',
          '%KEY',
          '%MSG',
          '%PARAM',
          '%PID',
          '%PID_ASSOC',
          '%PID_PARENT',
          '%_HINTS',
        ],
        cdsLanguage: [
          '@AbapAnnotation',
          '@AbapCatalog',
          '@AccessControl',
          '@API',
          '@ClientDependent',
          '@ClientHandling',
          '@CompatibilityContract',
          '@DataAging',
          '@EndUserText',
          '@Environment',
          '@LanguageDependency',
          '@MappingRole',
          '@Metadata',
          '@MetadataExtension',
          '@ObjectModel',
          '@Scope',
          '@Semantics',
          '$EXTENSION',
          '$SELF',
        ],
        selectors: ['->', '->*', '=>', '~', '~*'],
        operators: [
          ' +',
          ' -',
          '/',
          '*',
          '**',
          'div',
          'mod',
          '=',
          '#',
          '@',
          '+=',
          '-=',
          '*=',
          '/=',
          '**=',
          '&&=',
          '?=',
          '&',
          '&&',
          'bit-and',
          'bit-not',
          'bit-or',
          'bit-xor',
          'm',
          'o',
          'z',
          '<',
          ' >',
          '<=',
          '>=',
          '<>',
          '><',
          '=<',
          '=>',
          'bt',
          'byte-ca',
          'byte-cn',
          'byte-co',
          'byte-cs',
          'byte-na',
          'byte-ns',
          'ca',
          'cn',
          'co',
          'cp',
          'cs',
          'eq',
          'ge',
          'gt',
          'le',
          'lt',
          'na',
          'nb',
          'ne',
          'np',
          'ns',
          '*/',
          '*:',
          '--',
          '/*',
          '//',
        ],
        symbols: /[=><!~?&+\-*\/\^%#@]+/,
        tokenizer: {
          root: [
            [
              /[a-z_\/$%@]([\w\/$%]|-(?!>))*/,
              {
                cases: {
                  '@typeKeywords': 'type',
                  '@keywords': 'keyword',
                  '@cdsLanguage': 'annotation',
                  '@derivedTypes': 'type',
                  '@builtinFunctions': 'type',
                  '@builtinMethods': 'type',
                  '@operators': 'key',
                  '@default': 'identifier',
                },
              },
            ],
            [/<[\w]+>/, 'identifier'],
            [/##[\w|_]+/, 'comment'],
            { include: '@whitespace' },
            [/[:,.]/, 'delimiter'],
            [/[{}()\[\]]/, '@brackets'],
            [/@symbols/, { cases: { '@selectors': 'tag', '@operators': 'key', '@default': '' } }],
            [/'/, { token: 'string', bracket: '@open', next: '@stringquote' }],
            [/`/, { token: 'string', bracket: '@open', next: '@stringping' }],
            [/\|/, { token: 'string', bracket: '@open', next: '@stringtemplate' }],
            [/\d+/, 'number'],
          ],
          stringtemplate: [
            [/[^\\\|]+/, 'string'],
            [/\\\|/, 'string'],
            [/\|/, { token: 'string', bracket: '@close', next: '@pop' }],
          ],
          stringping: [
            [/[^\\`]+/, 'string'],
            [/`/, { token: 'string', bracket: '@close', next: '@pop' }],
          ],
          stringquote: [
            [/[^\\']+/, 'string'],
            [/'/, { token: 'string', bracket: '@close', next: '@pop' }],
          ],
          whitespace: [
            [/[ \t\r\n]+/, ''],
            [/^\*.*$/, 'comment'],
            [/\".*$/, 'comment'],
          ],
        },
      }
    return p(g)
  })()
  return moduleExports
})
